let express = require('express');
let app = express();

// 请求get http://localhost:3006/e

/* // 添加服务
app.get('/a',(req,res)=>{// 请求处理函数 fn1
    res.send( 'get /a' );
});
app.get('/b',(req,res)=>{// 请求处理函数 fn2
    res.send( 'get /b' );
});
app.get('/c',(req,res)=>{// 请求处理函数 fn3
    res.send( 'get /c' );
});

app.post('/a',(req,res)=>{// 请求处理函数 fn4
    res.send( 'post /a' );
});
app.post('/b',(req,res)=>{// 请求处理函数 fn5
    res.send( 'post /b' );
});
app.post('/c',(req,res)=>{// 请求处理函数 fn6
    res.send( 'post /c' );
});

app.get('/d',(req,res)=>{// 请求处理函数 fn7
    res.send( 'get /d' );
});
app.get('/e',(req,res)=>{// 请求处理函数 fn8
    res.send( 'get /e' );
});
app.get('/f',(req,res)=>{// 请求处理函数 fn9
    res.send( 'get /f' );
}); */

// 以上实现方式有什么问题？
// 1.匹配效率低
// 2.所有接口写在一个文件中，不方便阅读和维护
// 3.不利于模块化开发（根据业务拆分为不同的模块）


// 路由
// 路由，是指根据数据包的目的地地址进行定向转发到另一个接口的过程
// 通俗讲，根据不同的url地址，做不同的事情
// 前端路由：根据不同的url地址，前端展示不同的页面
// 后端路由：根据不同的url地址，后端响应不同的数据

// 创建路由表（空表）
// let router = express.Router();
// console.log( router );// function

// 根据业务拆分为多张路由表
let router1 = express.Router();
let router2 = express.Router();
let router3 = express.Router();

// 向路由表添加内容
router1.get('/a',(req,res)=>{// 请求处理函数 fn1
    res.send( 'get /a' );
});
router1.get('/b',(req,res)=>{// 请求处理函数 fn2
    res.send( 'get /b' );
});
router1.get('/c',(req,res)=>{// 请求处理函数 fn3
    res.send( 'get /c' );
});

router2.post('/a',(req,res)=>{// 请求处理函数 fn4
    res.send( 'post /a' );
});
router2.post('/b',(req,res)=>{// 请求处理函数 fn5
    res.send( 'post /b' );
});
router2.post('/c',(req,res)=>{// 请求处理函数 fn6
    res.send( 'post /c' );
});

router3.get('/d',(req,res)=>{// 请求处理函数 fn7
    res.send( 'get /d' );
});
router3.get('/e',(req,res)=>{// 请求处理函数 fn8
    res.send( 'get /e' );
});
router3.get('/f',(req,res)=>{// 请求处理函数 fn9
    res.send( 'get /f' );
});

// 使用router路由表去匹配请求
// app.use('/',router);

// http://localhost:3006/user/b

app.use('/user',router1);
app.use('/goods',router2);
app.use('/other',router3);

app.listen(3006,()=>{
    console.log( '-----------OK------------' );
});
